Index: Output/GNUstepOutput/Controllers/ConnectionController/ConnectionControllerNumericCommands.m
===================================================================
--- Output/GNUstepOutput/Controllers/ConnectionController/ConnectionControllerNumericCommands.m	(revision 3265)
+++ Output/GNUstepOutput/Controllers/ConnectionController/ConnectionControllerNumericCommands.m	(working copy)
@@ -167,8 +167,162 @@
 }
 - numericHandler433: (NSArray *)arguments
 {
-	return nil;
+    return nil;
 }
+- numericHandler329: (NSArray *)arguments
+{
+    	id channel = [arguments objectAtIndex: 0];
+	NSDictionary *attrib;
+	id date = [arguments objectAtIndex: 1];
+	
+	attrib = [date attributesAtIndex: 0 effectiveRange: 0];
+	date = [[NSDate dateWithTimeIntervalSince1970: [[date string] doubleValue]] 
+	   descriptionWithCalendarFormat: @"%a %b %e %H:%M:%S"
+	   timeZone: nil locale: nil];
+	date = [[[NSAttributedString alloc] initWithString: date
+	  attributes: attrib] autorelease];
+	
+	[content putMessage: 
+	  BuildAttributedFormat(_l(@"Channel %@ created at %@"),
+	  channel, date) in: channel];
+	
+	return self;
+}
+- numericHandler324: (NSArray *)arguments
+{
+    
+  id channel = [arguments objectAtIndex: 0];
+  NSMutableString *modeString = [NSMutableString string];  
+  int ind;
+
+  if ([arguments count] > 1)
+  {
+     
+    for (ind = 1; ind < [arguments count]; ind++)       
+    {
+        [modeString appendString: [[arguments objectAtIndex: ind] string]];
+        [modeString appendString: @" "];
+    }
+    [content putMessage: 
+        BuildAttributedFormat(_l(@"Channel %@ has mode %@"),
+        channel, modeString) in: channel];
+  }
+  else
+  {
+      [content putMessage: 
+        BuildAttributedFormat(_l(@"Channel %@ has no mode set"),
+        channel) in: channel];
+  }
+
+    
+  
+    return self;
+}
+// channel ban list
+- numericHandler367: (NSArray *)arguments
+{
+        id channel = [arguments objectAtIndex: 0];
+        id what = [arguments objectAtIndex: 1];
+        id who = [arguments objectAtIndex: 2];
+	NSDictionary *attrib;
+	id date = [arguments objectAtIndex: 3];
+	
+	attrib = [date attributesAtIndex: 0 effectiveRange: 0];
+	date = [[NSDate dateWithTimeIntervalSince1970: [[date string] doubleValue]] 
+	   descriptionWithCalendarFormat: @"%a %b %e %H:%M:%S"
+	   timeZone: nil locale: nil];
+	date = [[[NSAttributedString alloc] initWithString: date
+	  attributes: attrib] autorelease];
+	
+	[content putMessage: 
+	  BuildAttributedFormat(_l(@"Ban %@ set in %@ by %@ at %@"),
+	  what, channel, who, date) in: channel];
+	
+	return self;
+}
+- numericHandler368: (NSArray *)arguments
+{
+    return nil;
+}
+// channel quiet list
+- numericHandler728: (NSArray *)arguments
+{
+            id channel = [arguments objectAtIndex: 0];
+        id what = [arguments objectAtIndex: 2];
+        id who = [arguments objectAtIndex: 3];
+	NSDictionary *attrib;
+	id date = [arguments objectAtIndex: 4];
+	
+	attrib = [date attributesAtIndex: 0 effectiveRange: 0];
+	date = [[NSDate dateWithTimeIntervalSince1970: [[date string] doubleValue]] 
+	   descriptionWithCalendarFormat: @"%a %b %e %H:%M:%S"
+	   timeZone: nil locale: nil];
+	date = [[[NSAttributedString alloc] initWithString: date
+	  attributes: attrib] autorelease];
+	
+	[content putMessage: 
+	  BuildAttributedFormat(_l(@"Quiet %@ set in %@ by %@ at %@"),
+	  what, channel, who, date) in: channel];
+	
+	return self;
+}
+- numericHandler729: (NSArray *)arguments
+{
+    return nil;
+}
+// channel invite exception list
+- numericHandler346: (NSArray *)arguments
+{    
+            id channel = [arguments objectAtIndex: 0];
+        id what = [arguments objectAtIndex: 1];
+        id who = [arguments objectAtIndex: 2];
+	NSDictionary *attrib;
+	id date = [arguments objectAtIndex: 3];
+	
+	attrib = [date attributesAtIndex: 0 effectiveRange: 0];
+	date = [[NSDate dateWithTimeIntervalSince1970: [[date string] doubleValue]] 
+	   descriptionWithCalendarFormat: @"%a %b %e %H:%M:%S"
+	   timeZone: nil locale: nil];
+	date = [[[NSAttributedString alloc] initWithString: date
+	  attributes: attrib] autorelease];
+	
+	[content putMessage: 
+	  BuildAttributedFormat(_l(@"Invite exception %@ set in %@ by %@ at %@"),
+	  what, channel, who, date) in: channel];
+	
+	return self;
+    return nil;
+}
+- numericHandler347: (NSArray *)arguments
+{
+    return nil;
+}
+// end of channel ban exception list
+- numericHandler348: (NSArray *)arguments
+{
+            id channel = [arguments objectAtIndex: 0];
+        id what = [arguments objectAtIndex: 1];
+        id who = [arguments objectAtIndex: 2];
+	NSDictionary *attrib;
+	id date = [arguments objectAtIndex: 3];
+	
+	attrib = [date attributesAtIndex: 0 effectiveRange: 0];
+	date = [[NSDate dateWithTimeIntervalSince1970: [[date string] doubleValue]] 
+	   descriptionWithCalendarFormat: @"%a %b %e %H:%M:%S"
+	   timeZone: nil locale: nil];
+	date = [[[NSAttributedString alloc] initWithString: date
+	  attributes: attrib] autorelease];
+	
+	[content putMessage: 
+	  BuildAttributedFormat(_l(@"Ban exception %@ set in %@ by %@ at %@"),
+	  what, channel, who, date) in: channel];
+	
+	return self;
+}
+- numericHandler349: (NSArray *)arguments
+{
+    return nil;
+}
 @end
 
 
Index: Output/GNUstepOutput/Controllers/InputController.m
===================================================================
--- Output/GNUstepOutput/Controllers/InputController.m	(revision 3265)
+++ Output/GNUstepOutput/Controllers/InputController.m	(working copy)
@@ -863,6 +863,56 @@
 	send_message(aString, name, [controller connection]);
 	return self;
 }
+- ircCommandMode: (NSString *) aString
+{
+    // Input
+    id connection;
+    NSMutableArray* mArray = [[NSMutableArray new] autorelease];
+
+    // For output
+    id obj, mode = nil;
+    NSMutableArray* arg = [[NSMutableArray new] autorelease];
+    
+    // Used only in this subroutine (local)
+    int ind;
+    id name;
+    
+    // Parse user input
+    [mArray addObjectsFromArray: [aString separateIntoNumberOfArguments: -1]];
+    
+    // Get connection object
+    connection = [controller connection];
+
+    // Parse arguments - what is where.
+    // /MODE <nick/channel> [+-modes] [arguments]
+    //       object         mode      arg
+    
+    // *** 1. OBJECT - Channel or user name
+    // .. "Channel mode not given or begins with +/-" - use view name
+    name = [content nameForViewController: view];
+    if ([[content typeForName: name] isEqualToString: ContentControllerChannelType] && ([mArray count] == 0 || [[mArray objectAtIndex: 0] hasPrefix: @"+"] || [[mArray objectAtIndex: 0] hasPrefix: @"-"]))
+    {
+            [mArray insertObject: name atIndex: 0];    
+    }
+    obj = [mArray objectAtIndex: 0];
+    
+    // *** 2. MODES - character modes
+    if ([mArray count] > 1){
+        mode = [mArray objectAtIndex: 1];
+        // *** 3. ARGS - arguments for these modes
+        for (ind = 2; ind < [mArray count]; ind++)        {
+         [arg addObject: S2AS([mArray objectAtIndex: ind])];
+        }
+    }
+    
+    // Set the mode
+    [_TS_ setMode: S2AS(mode) on: S2AS(obj) withParams: arg
+     onConnection: connection withNickname: S2AS([connection nick])
+     sender: _GS_];
+    
+    // Exit
+    return self;
+}
 - ircCommandTopic: (NSString *)aString
 {
 	NSArray *x;
